from abc import ABC, abstractmethod
from .algo import AlgorithmInfo
from typing import Optional

class AlgorithmRepository(ABC):
    """
    An abstract base class representing a repository for managing algorithms.

    This class defines the interface for retrieving algorithm information
    by their unique identifiers.
    """

    @abstractmethod
    def get_algo_by_id(self, algo_id: str) -> Optional[AlgorithmInfo]:
        """
        Retrieve algorithm information by its unique identifier.

        Args:
            algo_id (str): The unique identifier of the algorithm.

        Returns:
            Optional[AlgorithmInfo]: The algorithm information if found, None otherwise.
        """
        pass


